//该文件中定义公共的js
const obj: Record<string, string> = {};
export function getBreadcrumbNameMap(routes: any): Record<string, string> {

    routes.forEach((item: any) => {
        if (item.label) {
            if (item.children) {
                getBreadcrumbNameMap(item.children)
            }

            obj[item.path] = item.label
        }

    })

    return obj
}


// 方法2: 根据路由routes 映射表数组得到一个树形菜单数组
export function getTreeDataArrFn(routes: any) {
    const treeDataArr = routes.map((item: any) => {
        if (item.key) {
            if (item.children) {
                return {
                    title: item.label,
                    key: item.key,
                    children: getTreeDataArrFn(item.children),
                }
            } else {
                return {
                    title: item.label,
                    key: item.key,
                }
            }
        }
    })

    return treeDataArr.filter((m: any) => m)
}

// 方法3: 将登录用户返回的checkedKeys 数组中处理成有父级路由的数组
//  checkedkeys: [
//     '/home',
//     '/account',
//     '/account/adminlist',
//     '/product/productlist',
//     '/product/filterlist'
//   ]

// 变成如下结构==>
//  checkedkeys: [
//     '/home',
//     '/account',
//     '/account/adminlist',
//     '/product'
//     '/product/productlist',
//     '/product/filterlist'
//   ]

export function getNewCheckedKeysFn(checkedkeys: string[]) {
    const newArr: any[] = [];
    checkedkeys.map(item => {
        let itemArr = item.split('/').filter(i => i)  // ['home'] 或 ['account','adminlist']
        let str = '';
        itemArr.forEach(child => {
            str += '/' + child    // /home   或 /account 和 /account/adminlist
            newArr.push(str)
            // 去重方法1
            // if (!newArr.includes(str)) {
            //     newArr.push(str)
            // }
        })
    })

    // 返回一个新的数组(去重方法2)
    return Array.from(new Set(newArr))
}


// 方法4: 根据处理完的新的 newCheckedKeys数组 和 原routes 数组进行比较,
// 得到最新的routes

export function getNewRoutesFn(routes: Array<any>, newCheckedKeys: Array<string>) {
    for (let i = routes.length - 1; i >= 0; i--) {
        let item = routes[i];
        if (item.key && !newCheckedKeys.includes(item.key)) {
            routes.splice(i, 1)
        }
        if (!item.key) {
            routes.splice(i, 1)
        }
        if (item.children) {
            getNewRoutesFn(item.children, newCheckedKeys)
        }
    }
    // 将删除完的routes返回
    return routes
}


